
import { moneyFilter } from '@/filters/number';
import { format } from '@/filters/date';

export default {
  methods: {
    getPrintData(printData, configItem, key = 'keyword') {
      if (!configItem || !printData) return '--';
      let value = configItem[key] ? printData[configItem[key]] : '';
      const formatStr = configItem.format || 'YYYY/MM/DD';
      switch (configItem.type) {
        case 'options':
          value = configItem.options[value] || '--';
          break;
        case 'money':
          value = value || value === 0 ? moneyFilter(configItem.unit === '分' ? value / 100 : value, true, '', true) : '--';
          break;
        case 'array':
          if (value && Array.isArray(value)) {
            value = value.map(i => i[configItem.arrKey]).join(',');
          } else {
            value = '';
          }
          break;
        case 'time':
          value = format(value, formatStr);
          break;
        case 'timeRange':
          if (configItem.startTime && configItem.endTime && printData[configItem.startTime] && printData[configItem.endTime]) {
            value = `${format(printData[configItem.startTime], formatStr)} - ${format(printData[configItem.endTime], formatStr)}`;
          }
          break;
      }
      return value || value === 0 ? value : '--';
    },
    handelCondition(condition, data) {
      if (!condition) return true;
      let ans = true;
      Object.keys(condition).forEach(key => {
        if (data[key] !== condition[key]) ans = false;
      });
      return ans;
    },
    hasData(printData, config) {
      if (config.type === 'process' && (!this.processData || this.processData.length === 0)) {
        return false;
      }
      if (config.type !== 'table') return true;
      if (config.noValidEmpty) return true;
      if (!printData[config.keyword]) return false;
      if (Array.isArray(printData[config.keyword]) && printData[config.keyword].length === 0) {
        return false;
      }
      return true;
    }
  }
};
